import pandas as pd
import re

# 读取 CSV 文件
file_path = 'E:\人工智能\资料\专高六\数据清洗\数据\（分类）train_cleaned.csv'
df = pd.read_csv(file_path)

# 处理缺失值，这里选择删除包含缺失值的行
df = df.dropna()

# 优化：指定按 'sentence' 列去除重复行
df = df.drop_duplicates(subset=['sentence'])

# 删除长文本，假设长文本是指 sentence 列中长度超过 200 个字符的文本
max_length = 200
df = df[df['sentence'].str.len() <= max_length]

# 去除前后空格
df['sentence'] = df['sentence'].str.strip()

# 去除特殊符号
def remove_special_characters(text):
    # 新增去除 \t 等空白字符的逻辑
    text = re.sub(r'[\t\r\n]+', ' ', text)
    # 新增去除长空格的逻辑
    text = re.sub(r' +', ' ', text)
    # 新增去除英文字符的逻辑
    text = re.sub(r'[a-zA-Z]', '', text)
    return re.sub(r'[^\w\s]', '', text)

df['sentence'] = df['sentence'].apply(remove_special_characters)

# 保存清洗后的数据
cleaned_file_path = 'E:\人工智能\资料\专高六\数据清洗\数据\（分类）train_cleaned.csv'
df.to_csv(cleaned_file_path, index=False)

print("数据清洗完成，清洗后的数据已保存至", cleaned_file_path)

# 检查清洗后的数据
cleaned_df = pd.read_csv(cleaned_file_path)

# 检查缺失值
missing_values = cleaned_df.isnull().sum().sum()
if missing_values > 0:
    print(f"清洗后的数据仍存在 {missing_values} 个缺失值。")
else:
    print("清洗后的数据不存在缺失值。")

# 检查重复行
duplicate_rows = cleaned_df.duplicated(subset=['sentence']).sum()
if duplicate_rows > 0:
    print(f"清洗后的数据仍存在 {duplicate_rows} 个重复行。")
else:
    print("清洗后的数据不存在重复行。")